package com.xigua._链表;

import java.util.HashSet;
import java.util.Set;

/**
 * @author LiRongHua
 * @Title: ${file_name}
 * @Package ${package_name}
 * @Description: 给定链表头结点 head，该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums，该列表是上述链表中整型值的一个子集。

返回列表 nums 中组件的个数，这里对组件的定义为：链表中一段最长连续结点的值（该值必须在列表 nums 中）构成的集合。

 
输入: head = [0,1,2,3], nums = [0,1,3]
输出: 2
解释: 链表中,0 和 1 是相连接的，且 nums 中不包含 2，所以 [0, 1] 是 nums 的一个组件，同理 [3] 也是一个组件，故返回 2。

 * @date 2022/10/1220:11
 */
public class _817_链表组件 {


    public int numComponents(ListNode head, int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int num : nums) {
            set.add(num);
        }
        int res = 0;
        boolean flag = true;
        while (head != null){
            if (set.contains(head.val)){
                if (flag) {
                    flag = false;
                    res++;
                }
            }else {
                flag = true;
            }
            head = head.next;
        }
        return res;
    }

}
